package com.tarena.lbs.activity.config;

import com.tarena.lbs.common.encoder.JwtEncoder;
import com.tarena.lbs.common.principle.UserPrinciple;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 初始化一个jwt编码器 生成jwt和解析jwt
 */
@Configuration
public class JwtEncoderConfig {
    /**
     * 创建并配置JwtEncoder bean
     *
     * 本方法用于生成JwtEncoder的实例，该实例用于编码JWT（JSON Web Token）
     * 为了确保JWT的安全性和一致性，这里使用了一个固定的密钥（盐），即"tarena2024;"
     * 这是因为在解析JWT时，需要使用相同的密钥，因此在生成JWT时也必须使用相同的密钥
     *
     * @return JwtEncoder<UserPrinciple> 返回配置好的JwtEncoder实例，用于编码JWT
     */
    @Bean
    public JwtEncoder<UserPrinciple> jwtEncoder(){
        // 实例化JwtEncoder
        JwtEncoder<UserPrinciple> jwtEncoder=new JwtEncoder<>();
        // 设置用于编码JWT的密钥（盐）
        jwtEncoder.setSecret("tarena2024;");
        // 返回配置好的JwtEncoder实例
        return jwtEncoder;
    }
}
